package dieciLuglio;

import java.io.*;
import java.util.*;




public class Utente {

	private String nome;
	private String cognome;
	private String nick;
	private String indirizzo;
	private String dataDiNascita;
	private String pass;
	private int codiceU=0;
	//private Map<String,LinkedList<Alimento>> piattiPrecedenti;
	Inviatore i=new Inviatore();
	
	public Utente(){
		
	}
	public Utente(int c){
		String d=i.inviaComando("creaUtenteID "+c);
		StringTokenizer st=new StringTokenizer(d,"#");
		this.codiceU=Integer.parseInt(st.nextToken());
		this.cognome=st.nextToken();
		this.indirizzo=st.nextToken();
		this.nick=st.nextToken();
		this.nome=st.nextToken();
		this.pass=st.nextToken();
	}
	
	public Utente(String nick,String pass){
		String d=i.inviaComando("creaUtente "+nick+" "+pass);
		StringTokenizer st=new StringTokenizer(d,"#");
		this.codiceU=Integer.parseInt(st.nextToken());
		this.cognome=st.nextToken();
		this.indirizzo=st.nextToken();
		this.nick=st.nextToken();
		this.nome=st.nextToken();
		this.pass=st.nextToken();
	}
	
	
	public Utente(String nome,String cognome,String nick,String indirizzo,String dataDiNascita,String pass){
		this.nome=nome;
		this.cognome=cognome;
		this.nick=nick;
		this.indirizzo=indirizzo;
		this.dataDiNascita=dataDiNascita;
		this.pass=pass;
		
	}
	
	public String getNome(){
		return nome;
	}
	public void setNome(String n){
		this.nome=n;
	}
	public int getCodice(){
		return codiceU;
	}
	public void setCodice(int codice){
		this.codiceU=codice;
	}
	
	public String getCognome(){
		return cognome;
	}
	public void setCognome(String cogn){
		this.cognome=cogn;
	}
	public String getDataDiNascita(){
		return dataDiNascita;
	}
	public void setDataDiNascita(String data){
		this.dataDiNascita=data;
	}
	public String getIndirizzo(){
		return indirizzo;
	}
	public void setIndirizo(String indirizzo){
		this.indirizzo=indirizzo;
	}
	public String getNick(){
		return nick;
	}
	public void setNick(String nick){
		this.nick=nick;
	}
	public String getPass(){
		return pass;
	}
	public void setPass(String pass){
		this.pass=pass;
	}
	
	
	public boolean utenteGiaRegistrato(){
		String a=i.inviaComando("utenteGiaRegistrato "+this.toString());
		if(a.equals("vero")){
			return true;
		}
		return false;
	}

	public boolean registraUtente(){
		String a=i.inviaComando("registraUtente "+this.toString());
		if(a.equals("vero")){
			return true;
		}
		return false;
	}
	/***
	 * Si chiede al database se esiste una corrispondenza tra nick e pass
	 * se la trova restiruisce vero altrimenti falso
	 * @param nick
	 * @param pass
	 * @return
	 * @throws SQLException
	 */
	public boolean accediUtente(){
		String nick=this.getNick();
		String pass=this.getPass();
		String a=i.inviaComando("accediUtente "+nick+" "+pass);
		if(a.equals("vero")){
			return true;
		}
		return false;
	}
	
	
	public String toString(){
		return ""+codiceU+"#"+cognome+"#"+indirizzo+"#"+nick+"#"+nome+"#"+pass;
	}
	/*
	public Map<String,LinkedList<Alimento>> getListaPiatti(){
		return piattiPrecedenti;
	}
	*/
	/***
	 * DA FINIRE 
	 */
	/*
	public void riempiMap(){
		String q="select data,codiceP from Valutazione where nomeCliente='"+this.nick+"'";
		ResultSet rs=null;
		try{
			conn=getConnection();
			stat=conn.createStatement();
			rs=stat.executeQuery(q);
			while(rs.next()){
				String da=rs.getDate(1).toString();
				int p=rs.getInt(2);
				//if(piattiPrecedenti.containsKey(da)){
					LinkedList<Alimento> tmp=piattiPrecedenti.get(da);
					tmp.addLast(new Alimento(p));
					piattiPrecedenti.put(da, tmp);
				
				}else{
					piattiPrecedenti.put(da, );
				}
			}
		}catch (SQLException e){
			e.printStackTrace();
		}
		catch (IOException e){
			e.printStackTrace();
		}

	}

	
	public static void main(String []args) throws SQLException{
		Utente u=new Utente("miku92","pass");
		Utente u1=new Utente("miku92","pass");
		boolean s=u.equals(u1);
		System.out.println(s);
	}
	*/
	
	public boolean equals(Object x){
		if(!(x instanceof Utente))
			return false;
		if(this==x)
			return true;
		Utente p=(Utente)x;
		return p.nick.equals(this.nick) && p.nome.equals(this.nome);
	}
	
}
